package Year22_Month05.day06;

public class 实现strStr_BF {
    public int strStr(String haystack, String needle) {
        //如果说主串或者模式串任意一个为空，那就返回0
        if(haystack == null || needle == null){
            return 0;
        }
        int hay_len = haystack.length();
        int nee_len = needle.length();
        //进行BF算法的具体实现
        for (int i = 0; i < hay_len; i++) {
            //定义一个临时指针key，这里不能直接对i操作
            int key = i;
            for (int j = 0; j < nee_len; j++) {
                //如果说检测到key越界或者说两个对应字符不相等那就直接break
                if(key > hay_len-1 || haystack.charAt(key) != needle.charAt(j)){
                    break;
                }
                //能来到这一步可以确定当前两个字符相等，那么就判断一下，如果j已经是模式串末尾位置，那就直接返回主串当前的下标
                if(j == nee_len - 1){
                    return i;
                }
                //如果说j不是末尾位置，那就让key和j继续往后走，一直比较
                key++;
            }
        }
        //如果最后检测到主串没有包含模式串，那么就直接返回-1
        return -1;
    }
}
